package com.demo.common.redis.delay;

import org.springframework.context.SmartLifecycle;
import org.springframework.data.redis.serializer.RedisSerializer;


/**
 * <p>
 * 延迟消息监听容器
 * </p>
 *
 * @author molong
 * @date 2022/6/22
 */
public interface DelayMessageListenerContainer extends SmartLifecycle {

    /**
     * 注册一个消息侦听
     * @param listener must not be {@literal null}.
     * @return the subscription handle.
     */
    Subscription register(DelayMessageListener listener);

    /**
     * 移除订阅
     * @param subscription 订阅信息
     */
    void remove(Subscription subscription);

    /**
     * 设置Redis值序列表
     * @param redisSerializer 序列化器
     */
    void setRedisSerializer(RedisSerializer<?> redisSerializer);

    /**
     * 每次拉取的数据量， 默认为10
     * @param batchSize 每次拉取消息数量
     */
    void setBatchSize(int batchSize);
}
